From: Jo-Philipp Wich Date: Sat, 2 Nov 2019 19:13:00 +0000 (+0100) Subject: rpcd-mod-luci: fix crash on not existing uci options X-Git-Url: http://git.openwrt.org/%22https:/collectd.org//%22/%22https:/collectd.org/%22?a=commitdiff_plain;h=180f6b78a2c3fc169bc56aeb194eb2fe38900124;p=project%2Fluci.git rpcd-mod-luci: fix crash on not existing uci options Checking the return value of uci_lookup_ptr() is not enough to ensure that the requested optiomn has actually been found. Signed-off-by: Jo-Philipp Wich --- diff --git a/libs/rpcd-mod-luci/src/luci.c b/libs/rpcd-mod-luci/src/luci.c index 04d3a15b7b..245ca636be 100644 --- a/libs/rpcd-mod-luci/src/luci.c +++ b/libs/rpcd-mod-luci/src/luci.c @@ -359,7 +359,7 @@ find_leasefile(struct uci_context *uci, const char *section) ptr.option = "leasefile"; ptr.o = NULL; - if (uci_lookup_ptr(uci, &ptr, NULL, true)) + if (uci_lookup_ptr(uci, &ptr, NULL, true) || ptr.o == NULL) continue; if (ptr.o->type != UCI_TYPE_STRING) @@ -1254,7 +1254,7 @@ rpc_luci_get_host_hints_uci(struct reply_context *rctx) ptr.option = "ip"; ptr.o = NULL; - if (uci_lookup_ptr(uci, &ptr, NULL, true)) + if (uci_lookup_ptr(uci, &ptr, NULL, true) || ptr.o == NULL) continue; if (ptr.o->type != UCI_TYPE_STRING) @@ -1266,7 +1266,7 @@ rpc_luci_get_host_hints_uci(struct reply_context *rctx) ptr.option = "name"; ptr.o = NULL; - if (!uci_lookup_ptr(uci, &ptr, NULL, true) && + if (!uci_lookup_ptr(uci, &ptr, NULL, true) && ptr.o != NULL && ptr.o->type == UCI_TYPE_STRING) n = ptr.o->v.string; else @@ -1275,7 +1275,7 @@ rpc_luci_get_host_hints_uci(struct reply_context *rctx) ptr.option = "mac"; ptr.o = NULL; - if (uci_lookup_ptr(uci, &ptr, NULL, true)) + if (uci_lookup_ptr(uci, &ptr, NULL, true) || ptr.o == NULL) continue; if (ptr.o->type == UCI_TYPE_STRING) {